package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 门店配品管理对象 store_accessories_management
 *
 * @author ruoyi
 * @date 2025-05-26
 */
public class StoreAccessoriesManagement extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 配品ID，主键，自增唯一标识 */
    private Long id;

    /** 配品名称，例如“纸巾”“餐具包”等，不允许为空 */
    @Excel(name = "配品名称，例如“纸巾”“餐具包”等，不允许为空")
    private String accessoryName;

    /** 配品简写，用于快速识别或打印小票，允许为空 */
    @Excel(name = "配品简写，用于快速识别或打印小票，允许为空")
    private String accessoryAbbreviation;

    /** 配品条码（如商品条形码或内部编码），允许为空但唯一 */
    @Excel(name = "配品条码", readConverterExp = "如=商品条形码或内部编码")
    private String barcode;

    /** 配品售价，单位为元，保留两位小数，不允许为空 */
    @Excel(name = "配品售价，单位为元，保留两位小数，不允许为空")
    private BigDecimal sellingPrice;

    /** 配品分类ID，关联分类表的主键，允许为空（未分类） */
    @Excel(name = "配品分类ID，关联分类表的主键，允许为空", readConverterExp = "未=分类")
    private Long categoryId;

    /** 配品单位，例如“包”“套”“个”等，允许为空 */
    @Excel(name = "配品单位，例如“包”“套”“个”等，允许为空")
    private String unit;

    /** 保质期，单位为天，允许为空（无保质期或按批次管理） */
    @Excel(name = "保质期，单位为天，允许为空", readConverterExp = "无=保质期或按批次管理")
    private Long shelfLife;

    /** 配品图片URL，存储图片的访问路径或CDN地址，允许为空 */
    @Excel(name = "配品图片URL，存储图片的访问路径或CDN地址，允许为空")
    private String accessoryImageUrl;

    /** 配品状态，1表示启用，0表示禁用，默认为启用 */
    @Excel(name = "配品状态，1表示启用，0表示禁用，默认为启用")
    private Integer status;

    /** 配品品牌，例如“清风”“心相印”等，允许为空 */
    @Excel(name = "配品品牌，例如“清风”“心相印”等，允许为空")
    private String brand;

    /** 库存上限，设置该配品的最大库存数量，允许为空（不限制） */
    @Excel(name = "库存上限，设置该配品的最大库存数量，允许为空", readConverterExp = "不=限制")
    private Long maxStock;

    /** 库存下限，设置该配品的最低库存数量，允许为空（不限制） */
    @Excel(name = "库存下限，设置该配品的最低库存数量，允许为空", readConverterExp = "不=限制")
    private Long minStock;

    /** 参与库存计算，1表示参与，0表示不参与，默认为参与 */
    @Excel(name = "参与库存计算，1表示参与，0表示不参与，默认为参与")
    private Integer includeInStockCalc;

    /** 配品描述，支持富文本或长文本说明，允许为空 */
    @Excel(name = "配品描述，支持富文本或长文本说明，允许为空")
    private String description;

    /** 点单时改价，0=未设置（默认禁止），1=允许，2=不允许 */
    @Excel(name = "点单时改价，0=未设置", readConverterExp = "默=认禁止")
    private Integer allowPriceEditDuringOrder;

    /** 整单折扣，0=未设置（默认禁止），1=允许，2=不允许 */
    @Excel(name = "整单折扣，0=未设置", readConverterExp = "默=认禁止")
    private Integer allowWholeOrderDiscount;

    /** 折扣方式，unset=未设置，no_discount=无折扣，member_level_discount=会员等级折扣，custom_member_discount=另设会员等级折扣，custom_member_price=另设会员等级价格 */
    @Excel(name = "折扣方式，unset=未设置，no_discount=无折扣，member_level_discount=会员等级折扣，custom_member_discount=另设会员等级折扣，custom_member_price=另设会员等级价格")
    private String discountType;

    /** 属于配赠配品，0=未设置（默认不属于），1=属于配赠，2=不属于配赠 */
    @Excel(name = "属于配赠配品，0=未设置", readConverterExp = "默=认不属于")
    private Integer isGiftAccessory;

    /** 支持自助点单，0=未设置（默认不支持），1=支持，2=不支持 */
    @Excel(name = "支持自助点单，0=未设置", readConverterExp = "默=认不支持")
    private Integer supportSelfOrder;

    /** 参与最低消费，0=未设置（默认不参与），1=参与，2=不参与 */
    @Excel(name = "参与最低消费，0=未设置", readConverterExp = "默=认不参与")
    private Integer participateInMinConsumption;

    /** 参与会员积分，0=未设置（默认不参与），1=参与，2=不参与 */
    @Excel(name = "参与会员积分，0=未设置", readConverterExp = "默=认不参与")
    private Integer participateInMemberPoints;

    /** 参与积分兑换，0=未设置（默认不参与），1=参与，2=不参与 */
    @Excel(name = "参与积分兑换，0=未设置", readConverterExp = "默=认不参与")
    private Integer participateInPointsExchange;

    /** 参与积分抵现，0=未设置（默认不参与），1=参与，2=不参与 */
    @Excel(name = "参与积分抵现，0=未设置", readConverterExp = "默=认不参与")
    private Integer participateInPointsDeduction;

    /** 参与手动优惠，0=未设置（默认不参与），1=参与，2=不参与 */
    @Excel(name = "参与手动优惠，0=未设置", readConverterExp = "默=认不参与")
    private Integer participateInManualDiscount;

    /** 打印设置，存储JSON格式的配置，例如打印机名称、打印份数、打印模板等，允许为空 */
    @Excel(name = "打印设置，存储JSON格式的配置，例如打印机名称、打印份数、打印模板等，允许为空")
    private String printSettings;

    /** 记录创建时间，默认为当前时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "记录创建时间，默认为当前时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdAt;

    /** 记录更新时间，默认为当前时间，更新时自动刷新 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "记录更新时间，默认为当前时间，更新时自动刷新", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedAt;

    /** 手机号 */
    @Excel(name = "手机号")
    private String phone;

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setAccessoryName(String accessoryName)
    {
        this.accessoryName = accessoryName;
    }

    public String getAccessoryName()
    {
        return accessoryName;
    }

    public void setAccessoryAbbreviation(String accessoryAbbreviation)
    {
        this.accessoryAbbreviation = accessoryAbbreviation;
    }

    public String getAccessoryAbbreviation()
    {
        return accessoryAbbreviation;
    }

    public void setBarcode(String barcode)
    {
        this.barcode = barcode;
    }

    public String getBarcode()
    {
        return barcode;
    }

    public void setSellingPrice(BigDecimal sellingPrice)
    {
        this.sellingPrice = sellingPrice;
    }

    public BigDecimal getSellingPrice()
    {
        return sellingPrice;
    }

    public void setCategoryId(Long categoryId)
    {
        this.categoryId = categoryId;
    }

    public Long getCategoryId()
    {
        return categoryId;
    }

    public void setUnit(String unit)
    {
        this.unit = unit;
    }

    public String getUnit()
    {
        return unit;
    }

    public void setShelfLife(Long shelfLife)
    {
        this.shelfLife = shelfLife;
    }

    public Long getShelfLife()
    {
        return shelfLife;
    }

    public void setAccessoryImageUrl(String accessoryImageUrl)
    {
        this.accessoryImageUrl = accessoryImageUrl;
    }

    public String getAccessoryImageUrl()
    {
        return accessoryImageUrl;
    }

    public void setStatus(Integer status)
    {
        this.status = status;
    }

    public Integer getStatus()
    {
        return status;
    }

    public void setBrand(String brand)
    {
        this.brand = brand;
    }

    public String getBrand()
    {
        return brand;
    }

    public void setMaxStock(Long maxStock)
    {
        this.maxStock = maxStock;
    }

    public Long getMaxStock()
    {
        return maxStock;
    }

    public void setMinStock(Long minStock)
    {
        this.minStock = minStock;
    }

    public Long getMinStock()
    {
        return minStock;
    }

    public void setIncludeInStockCalc(Integer includeInStockCalc)
    {
        this.includeInStockCalc = includeInStockCalc;
    }

    public Integer getIncludeInStockCalc()
    {
        return includeInStockCalc;
    }

    public void setDescription(String description)
    {
        this.description = description;
    }

    public String getDescription()
    {
        return description;
    }

    public void setAllowPriceEditDuringOrder(Integer allowPriceEditDuringOrder)
    {
        this.allowPriceEditDuringOrder = allowPriceEditDuringOrder;
    }

    public Integer getAllowPriceEditDuringOrder()
    {
        return allowPriceEditDuringOrder;
    }

    public void setAllowWholeOrderDiscount(Integer allowWholeOrderDiscount)
    {
        this.allowWholeOrderDiscount = allowWholeOrderDiscount;
    }

    public Integer getAllowWholeOrderDiscount()
    {
        return allowWholeOrderDiscount;
    }

    public void setDiscountType(String discountType)
    {
        this.discountType = discountType;
    }

    public String getDiscountType()
    {
        return discountType;
    }

    public void setIsGiftAccessory(Integer isGiftAccessory)
    {
        this.isGiftAccessory = isGiftAccessory;
    }

    public Integer getIsGiftAccessory()
    {
        return isGiftAccessory;
    }

    public void setSupportSelfOrder(Integer supportSelfOrder)
    {
        this.supportSelfOrder = supportSelfOrder;
    }

    public Integer getSupportSelfOrder()
    {
        return supportSelfOrder;
    }

    public void setParticipateInMinConsumption(Integer participateInMinConsumption)
    {
        this.participateInMinConsumption = participateInMinConsumption;
    }

    public Integer getParticipateInMinConsumption()
    {
        return participateInMinConsumption;
    }

    public void setParticipateInMemberPoints(Integer participateInMemberPoints)
    {
        this.participateInMemberPoints = participateInMemberPoints;
    }

    public Integer getParticipateInMemberPoints()
    {
        return participateInMemberPoints;
    }

    public void setParticipateInPointsExchange(Integer participateInPointsExchange)
    {
        this.participateInPointsExchange = participateInPointsExchange;
    }

    public Integer getParticipateInPointsExchange()
    {
        return participateInPointsExchange;
    }

    public void setParticipateInPointsDeduction(Integer participateInPointsDeduction)
    {
        this.participateInPointsDeduction = participateInPointsDeduction;
    }

    public Integer getParticipateInPointsDeduction()
    {
        return participateInPointsDeduction;
    }

    public void setParticipateInManualDiscount(Integer participateInManualDiscount)
    {
        this.participateInManualDiscount = participateInManualDiscount;
    }

    public Integer getParticipateInManualDiscount()
    {
        return participateInManualDiscount;
    }

    public void setPrintSettings(String printSettings)
    {
        this.printSettings = printSettings;
    }

    public String getPrintSettings()
    {
        return printSettings;
    }

    public void setCreatedAt(Date createdAt)
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt()
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt)
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt()
    {
        return updatedAt;
    }

    public void setPhone(String phone)
    {
        this.phone = phone;
    }

    public String getPhone()
    {
        return phone;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("accessoryName", getAccessoryName())
                .append("accessoryAbbreviation", getAccessoryAbbreviation())
                .append("barcode", getBarcode())
                .append("sellingPrice", getSellingPrice())
                .append("categoryId", getCategoryId())
                .append("unit", getUnit())
                .append("shelfLife", getShelfLife())
                .append("accessoryImageUrl", getAccessoryImageUrl())
                .append("status", getStatus())
                .append("brand", getBrand())
                .append("maxStock", getMaxStock())
                .append("minStock", getMinStock())
                .append("includeInStockCalc", getIncludeInStockCalc())
                .append("description", getDescription())
                .append("allowPriceEditDuringOrder", getAllowPriceEditDuringOrder())
                .append("allowWholeOrderDiscount", getAllowWholeOrderDiscount())
                .append("discountType", getDiscountType())
                .append("isGiftAccessory", getIsGiftAccessory())
                .append("supportSelfOrder", getSupportSelfOrder())
                .append("participateInMinConsumption", getParticipateInMinConsumption())
                .append("participateInMemberPoints", getParticipateInMemberPoints())
                .append("participateInPointsExchange", getParticipateInPointsExchange())
                .append("participateInPointsDeduction", getParticipateInPointsDeduction())
                .append("participateInManualDiscount", getParticipateInManualDiscount())
                .append("printSettings", getPrintSettings())
                .append("createdAt", getCreatedAt())
                .append("updatedAt", getUpdatedAt())
                .append("phone", getPhone())
                .toString();
    }
}
